<?php
/**
  * IBD - Projet Helvetia - 2009
  *
  * Alexandre DOS SANTOS COELHO
  * Mathieu RICHARD
  * Karim EL-ALAILI
  * Julien REBETEZ
  *
  */

/**
 * Controlleur pour les evenements
 * @package controlleurs
 */
class EventsController extends AppController {
  var $name = 'Events';
  var $pageTitle = "Evénements";
  var $components = array('RequestHandler');
  var $uses = array('Event');

  /**
   * Affichage de l'index des evenements => listing de tous les evenements
   * @see views/uploads/index.ctp
   */
  function index () {
    $this->set('coming_events', $this->Event->findAll(array('startDate >= NOW()'),
                                                      null,
                                                      array('startDate DESC')));
    $this->set('past_events', $this->Event->findAll(array('startDate < NOW()'),
                                                    null,
                                                    array('startDate DESC')));
  }

  /**
   * Affichage d'un evenement particulier
   * @param $id l'id de l'element a afficher
   * @see views/uploads/view.ctp
   */
  function view ($id = null) {
    $this->Event->id = $id;
    $this->set('event', $this->Event->Read());
  }

  /**
   * Creation d'un evenement
   * @see views/uploads/admin_add.ctp
   */
  function admin_add () {
    //Si on a des donnees en POST, on les sauve
    if (!empty($this->data['Event'])) {
      if ($this->Event->save($this->data)) {
        $this->flashRedirect('Evenement ajouté', '/events');
      } else {
        //erreur lors de la validation
        $this->flash("Erreur lors de la validation<br /> Veuillez corriger");
      }
    }
  }

  /**
   * Edition d'un evenement
   * @param $id l'id de l'evenement a editer
   * @see views/uploads/admin_edit.ctp
   */
  function admin_edit ($id = null) {
    global $VIEWS;

    $this->Event->id = $id;

    if (!empty($this->data)) {
      //donnees POST, on sauve
      if ($this->Event->save($this->data['Event']) ) {
        $this->flashRedirect('Evénement edité', '/events');
      } else { 
        //erreur lors de la validation
        $this->flash("Erreur lors de la validation<br /> Veuillez corriger");
      }
    }

    //On sauvegarde les erreurs de validation et on restaure apres 
    //le read, sans quoi on les perds
    $errors = $this->Event->validationErrors;
    $this->data = $this->Event->read();
    $this->Event->validationErrors = $errors;

    $this->render("/$VIEWS/events/admin_add");
  }

  /**
   * Suppression d'un evenement
   * @param $id l'id de l'evenement a supprimer
   * @see views/uploads/admin_delete.ctp
   */
  function admin_delete ($id = null) {
    $this->Event->del($id);
    $this->flashRedirect('Evénement supprimé', '/events');
  }
}
?>
